package hsrt.com.dynamiccomponent_android.dynamic_component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;


public class DataToItemMapper {
    private HashMap<Integer, DynamicComponentInterface> componentNameMap = new HashMap<>();

    /**
     * 可以这样想一下,我现在并不存储class,而是存储这些处理单元对象,每次register的时候把这个对象注册一遍,
     * 然后在convert的时候传递给component holder和item数据 ,这样让component来封装处理操作.
     * 关于批量添加和删除的操作,还是由双链表的数据结构进行快速处理,处理过后使用addData添加到adapter里.
     */

    protected void registerItem(ArrayList<DynamicComponentInterface> dynamicComponentInterfaces, DynamicDisplayManager manager) {
        for (DynamicComponentInterface dynamicComponentInterface : dynamicComponentInterfaces) {
            dynamicComponentInterface.setDynamicManager(manager);
            componentNameMap.put(dynamicComponentInterface.registerName(), dynamicComponentInterface);
        }
    }

    protected HashMap<Integer, Integer> getTypeAndId() {

        if (componentNameMap.isEmpty()) {
            return null;
        }

        HashMap<Integer, Integer> result = new HashMap<>();

        for (Map.Entry<Integer, DynamicComponentInterface> entry : componentNameMap.entrySet()) {
            DynamicComponentInterface dynamicComponentInterface = entry.getValue();
            result.put(entry.getKey(), dynamicComponentInterface.registerName());
        }

        return result;
    }

    public DynamicComponentInterface getDynamicComponent(Integer type) {

        return componentNameMap.get(type);
    }


}
